package com.haixiaoke.saas.common.utils;

/**
 * 手机和身份证脱敏工具类
 */
public class DesensitizeUtils {
    public static String desensitizePhone(String phone) {
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }

    public static String desensitizeIdCard(String idCard) {
        return idCard.replaceAll("(\\d{6})\\d{8}(\\w{4})", "$1********$2");
    }

    /**
     * 名字脱敏
     * @param name
     * @return
     */
    public static String desensitizeName(String name) {
        if (name == null || name.isEmpty()) {
            return name; // 处理空值
        }

        // 如果名字长度为1，直接返回
        if (name.length() == 1) {
            return name;
        }
        // 如果名字长度为2，保留两个字母
        else if (name.length() == 2) {
            return name.charAt(0) + "*"; // 将最后一个字替换为星号
        }
        // 如果名字长度大于2，保留首字和末字，其余替换为星号
        else {
            return name.charAt(0) + repeat("*", name.length() - 2) + name.charAt(name.length() - 1);
        }
    }

    // 辅助方法：重复生成字符串
    private static String repeat(String str, int times) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < times; i++) {
            sb.append(str);
        }
        return sb.toString();
    }
}
